package cn.zhikaizhang.indexviewdemo.demo2;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.CallLog;
import android.provider.ContactsContract;
import android.util.Log;

/**
 * 创建时间：2016年08月30日22:03 <br>
 * 作者：fuchaoyang <br>
 * 描述：
 */
public class ContactNoteActivity extends Activity {
  @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    init();
  }

  //根据一个已知的电话号码，从通讯录中获取相对应的联系人姓名的代码
  public String getContactNameFromPhoneBook(Context context, String phoneNum) {
    String contactName = "";
    ContentResolver cr = getContentResolver();
    Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
        ContactsContract.CommonDataKinds.Phone.NUMBER + " = ?", new String[] { phoneNum }, null);
    if (pCur.moveToFirst()) {
      contactName =
          pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
      pCur.close();
    }
    return contactName;
  }

  private void init() {
    String[] project = new String[] {
        "distinctnumber", CallLog.Calls.NUMBER, CallLog.Calls.DURATION, CallLog.Calls.TYPE
    };
    // SELECT max(date) as max_date, number, duration,type FROM calls WHERE (1=1) group by(number) ORDER BY date DESC
    // 实现了通话记录的去重和查询的功能（去重是把时间靠前的通话记录去掉）
    Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, project, null, null,
        CallLog.Calls.DEFAULT_SORT_ORDER);

    //String[] projection = {
    //    CallLog.Calls.DATE, CallLog.Calls.NUMBER,
    //    //			CallLog.Calls.TYPE,
    //    //			CallLog.Calls.CACHED_NAME,
    //    //			CallLog.Calls._ID
    //}; // 查询的列
    //
    //Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, null, null,
    //    CallLog.Calls.DEFAULT_SORT_ORDER);
    if (cursor != null && cursor.getCount() > 0) {
      cursor.moveToFirst();
      // 如果上面直接去重实现不了，可以在list中判断，是否包含如果当前取下一个，否则添加，如果list.size=3;break
      for (int i = 0; i < cursor.getCount() && i < 3; i++) {
        cursor.moveToPosition(i);
        //					String date = cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE));
        String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
        //				int type = cursor.getInt(cursor.getColumnIndex(CallLog.Calls.TYPE));
        //				String cachedName = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));//缓存的名称与电话号码，如果它的存在
        //				int id = cursor.getInt(cursor.getColumnIndex(CallLog.Calls._ID));
        String name = getContactNameFromPhoneBook(this, number);
        Log.i("fcy", "----------------- name=" + name + ":phone=" + number);
      }
    }
  }

  //	public void get(){
  //	  final Cursor cursor = cr.query(CallLog.Calls.CONTENT_URI, new String[] {
  //	          CallLog.Calls.NUMBER, CallLog.Calls.CACHED_NAME,
  //	          CallLog.Calls.TYPE, CallLog.Calls.DATE }, null, null,
  //	      CallLog.Calls.DEFAULT_SORT_ORDER);
  //	  final Cursor cursor = cr.query(数据库表名，取得的数据数组（里边包含字段名称），条件，参数组，排序等信息） //这就相当于一条SQL语句//取得所有通话信息  这里边稍微有点复杂
  //
  //	  for (int i = 0; i < cursor.getCount(); i++) {
  //	    cursor.moveToPosition(i);
  //	    str = cursor.getString(0);
  //	    type = cursor.getInt(2);
  //	    if (type == 3) {
  //	      tel = str;
  //	      break;
  //	    }
  //	  } //取得值
  //
  //	  final Cursor cursor = cr.query(CallLog.Calls.CONTENT_URI, new String[] {
  //	          CallLog.Calls.NUMBER }, "type=3", null,
  //	      "date desc limit 1");
  //
  //	  //这个就是取得最近的一次未接来电的电话号码。
  //
  //	  if(cursor.moveToFirst()){
  //	    tel = cursor.getString(0);
  //	  }
  //	}
}
